﻿namespace UnityEngine
{
    using System;
    using System.Runtime.CompilerServices;

    public sealed class SystemInfo
    {
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public static extern bool SupportsRenderTextureFormat(RenderTextureFormat format);

        private static string _deviceModel;
        public static string deviceModel
        {
            [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
            get
            {
                return _deviceModel;
            }
        }

        private static string _deviceName;
        public static string deviceName { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get { return _deviceName; } }

        private static DeviceType _deviceType;
        public static DeviceType deviceType { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get { return _deviceType; } }

        private static string _deviceUniqueIdentifier;
        public static string deviceUniqueIdentifier { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get { return _deviceUniqueIdentifier; } }

        private static int _graphicsDeviceID;
        public static int graphicsDeviceID { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get { return _graphicsDeviceID; } }

        public static string graphicsDeviceName { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static string graphicsDeviceVendor { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static int graphicsDeviceVendorID { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static string graphicsDeviceVersion { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static int graphicsMemorySize { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static int graphicsPixelFillrate { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static int graphicsShaderLevel { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static string operatingSystem { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static int processorCount { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static string processorType { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static int supportedRenderTargetCount { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static bool supports3DTextures { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static bool supportsAccelerometer { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static bool supportsComputeShaders { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static bool supportsGyroscope { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static bool supportsImageEffects { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static bool supportsInstancing { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static bool supportsLocationService { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static bool supportsRenderTextures { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static bool supportsShadows { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static bool supportsVertexPrograms { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static bool supportsVibration { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public static int systemMemorySize { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }
    }
}

